Storage circuits are often used to hold a state in an integrated circuit, and write access to these storage circuits before the execution of a user application is usually required, for example as part of initializing a computation. Consider a programmable logic device (PLD) as one example of an integrated circuit. Configuring the PLD to implement a given circuit design involves programming configuration memory elements by writing data to storage circuits. Furthermore, storage circuits are often required to be in an initial state before the integrated circuit begins to operate. For example, conditions on storage circuits often set the starting point of a computation (e.g., reset a counter to zero) or store coefficients for computations (e.g., for finite impulse response (FIR) filters).
Read access to these storage circuits that is independent of the execution of a user application during the operation of the integrated circuit plays an equally important role. For example, applications involving debug operations such as observing the state of the integrated circuit to determine the correctness of an operation, using the integrated circuit for the purpose of emulating a circuit design, or monitoring the integrated circuit for defects or the occurrence of error conditions such as single event upsets (SEU) often require the extraction of the state of storage circuits in the integrated circuit.